Dashboard Temp Share Shortlinks Frames API

HTMLify

Single Elements in Sorted Array.cpp
Views: 1 | Author: cody
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
public:
  int singleNonDuplicate(vector<int>& nums) {
  int n = nums.size();
	if(n == 1) return nums[0];
	if(nums[0] != nums[1]) return nums[0];
	if(nums[n-1] != nums[n-2]) return nums[n-1];

	int start = 1,  end = n-2;

	while(start<=end){
		int mid = start + (end - start) /2;
		if(nums[mid]!=nums[mid-1] && nums[mid] != nums[mid + 1]){
			return nums[mid];
		}
		// left part 
		if((mid % 2 ==1 && nums[mid]==nums[mid-1]) || (mid % 2 == 0 && nums[mid] == nums[mid+1])){
			start = mid +1;
		}
		else{
			end = mid -1;
		}
	}
	return -1;
}  
};